﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;

public class UserData : ReflectSingleton<UserData>
{
    //公开一个可获取的weapons字典属性
    public Dictionary<int, Weapon> weapons { get; }
    public int ItemCount = 10;
    private UserData()
    {
        //创建一个weapons字典
        weapons = new Dictionary<int, Weapon>();
    }

    public void ExChangeWeapon(BagItem item1,BagItem item2)
    {
        
        

        
    }
    //从json文件中读取玩家装备数据的方法
    public void ReadBagData()
    {
        //先清除字典中的数据，避免数据混乱
        weapons.Clear();
        //从路径中读取json文件，读取出来为string类型
        string jsonStr = File.ReadAllText(Application.dataPath + "BagData.json");
        //把数据使用JsonMapper转为User类型
        User user = JsonMapper.ToObject<User>(jsonStr);
        //遍历装备数据，并使用“：”分割开
        for (int i = 0; i < user.weapons.Count; i++)
        {
            string[] weapon_split = user.weapons[i].Split(':');
            //调用Weapon工厂中的GetWeaponByID方法
            Weapon _weapon = WeaponFactory.Instance.GetWeaponByID(int.Parse(weapon_split[1]));
            //存入到字典中
            weapons.Add(int.Parse(weapon_split[0]),_weapon);
        }
    }
    //写入玩家装备数据到json文件的方法
    public void WriteBagData()
    {
        //创建一个新的User对象
        User user = new User();
        //创建一个新的string列表
        user.weapons = new List<string>();
        //遍历装备数据并存入列表中
        foreach (var item in weapons)
        {
            user.weapons.Add(string.Format("{0};{1}", item.Key, item.Value.id));
        }
        //使用JsonMapper将user转为string类型
        string jsonStr= JsonMapper.ToJson(user);
        //存入到json文件中
        File.WriteAllText(Application.dataPath + "/BagData.json", jsonStr);
    }

    public void AddWeapon(int index,Weapon _weapon)
    {
        weapons.Add(index, _weapon);
    }
    public void AddWeapon(int index, string name)
    {
        weapons.Add(index, WeaponFactory.Instance.GetWeaponByName(name));
    }
    public void AddWeapon(int index, int weaponId)
    {
        weapons.Add(index, WeaponFactory.Instance.GetWeaponByID(weaponId));
    }

}
